$(function(){
    initFormValid();
    // 重置验证
    initFormValid().resetForm();
    $("#dataForm").find(".has-error").removeClass("has-error");

    //弹出框 荣誉表单验证初始化
    initHonorFormValid();
	//弹出框 事件表单验证初始化
    initEventFormValid();

	$('#file-pretty input[type="file"]').prettyFile({text:"请选择..."});
    // 图片上传操作
   	initUploadImage();
    //查询联系信息
    findContact();
    // 初始化table并刷新数据
    $('#tbHonor').bootstrapTable(initHonor);
    // 初始化table并刷新数据
    $('#tbEvent').bootstrapTable(initEvent);

	// 保存按钮点击事件
	$("#btnSave").click(function() {
		saveContact();
	});

    //弹出框保存按钮点击事件
    $("#btnModalSave").click(function(){
        saveModalData();//保存数据
    });

	// 添加荣誉 点击事件
	$("#addHonor").click(function () {
        //显示弹出框
        showModal(1);
    })
    // 添加事件 点击事件
    $("#addEvent").click(function () {
        //显示弹出框
        showModal(2);
    })

});


//添加或（修改）联系信息
var saveContact = function() {
    // 验证表单数据
    if (!$("#dataForm").valid()) {
        return;
    }
	//获取表单元素所有数据集合
	var formData = CommonUtils.getFormJson('#dataForm');
	// 请求后台
	$.ajax({
		url : "/init/contact/updateContact",
		data : CommonUtils.encapsulationData(formData),
		type : 'post',
		dataType : 'json',
		async : false,// 同步请求
		contentType : "application/json",
		success : function(data) {
			if(data.result){
                $("#logoImg").val(data.url);
				// 消息提示
				swal({title : "恭喜您",text : data.msg,type : "success"},function () {
                    closeMenuTab();//关闭当前选项卡
                });
			} else {
				// 消息提示款
				swal({title : "很抱歉", text : data.msg, type : "error" });
			}
		},
		error : function(req, status, err) {
			// 消息提示款
			errorFunc(req, status, err);
		}
	});
}

// 保存弹出框数据
var saveModalData=function(){
    var url = null;
    var formData = null;
    var type = $('#dataModal').find("#modalType").val();
    if(type == "1"){//添加荣誉
        //验证表单数据
        if (!$("#honorModalForm").valid()) {
            return;
        }
        url = "/init/contact/addHonor";
        //获取表单元素所有数据集合
        formData = CommonUtils.getFormJson('#honorModalForm');
    }else if(type == "2"){//添加事件
        //验证表单数据
        if (!$("#eventModalForm").valid()) {
            return;
        }
        url = "/init/contact/addEvent";
        //获取表单元素所有数据集合
        formData = CommonUtils.getFormJson('#eventModalForm');
    }
    //请求后台
    if(null != url){
        $.ajax({
            url:url,
            data:CommonUtils.encapsulationData(formData),
            type:'post',
            dataType:'json',
            contentType: "application/json",
            success:function(data) {
                if(data.result){
                    //消息提示款
                    swal({title : "恭喜您",text : data.msg,type : "success"},function(){
                        //关闭弹出框
                        $("#dataModal").modal("hide");
                        if(type == "1"){//添加荣誉
                            //刷新列表
                            $("#tbHonor").bootstrapTable('refresh', initHonor);
                            //重置表单
                            $("#honorModalForm").get(0).reset();
                        }else if(type == "2"){//添加事件
                            //刷新列表
                            $("#tbEvent").bootstrapTable('refresh', initEvent);
                            //重置表单
                            $("#eventModalForm").get(0).reset();
                        }
                    });
                }else{
                    //消息提示款
                    swal({title : "很抱歉",text : data.msg,type : "error"});
                }
            },
            error : function(req, status, err) {
                //消息提示款
                errorFunc(req, status, err);
            }
        });
    }
};

//判断弹出框类型（修改、新增、详情）并显示
var showModal =function(type){
    //添加荣誉
    if(type == 1){
        //重置表单
        $("#honorModalForm").get(0).reset();
        $('#dataModal').find("h4").html("添加荣誉");
        //显示区域
        $("#honor").show();
        $("#event").hide();
        //重置验证
        initHonorFormValid().resetForm();
        $("#honorModalForm").find(".has-error").removeClass("has-error");
    }
    //添加
    if(type == 2){
        //重置表单
        $("#eventModalForm").get(0).reset();
        $('#dataModal').find("h4").html("修改");
        //显示区域
        $("#event").show();
        $("#honor").hide();
        //重置验证
        initEventFormValid().resetForm();
        $("#eventModalForm").find(".has-error").removeClass("has-error");
    }
    //弹出模式窗口
    $('#dataModal').modal({show:true,backdrop: 'static', keyboard: false});
    //隐藏值，角色判断提交数据的类型
    $('#dataModal').find("#modalType").val(type);
}


// 查询的参数
var queryParams = function(params) {
    var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
        limit : params.limit, // 页面大小
        offset : params.offset // 页码
    };
    return CommonUtils.encapsulationData(temp);
};

//操作
var actionFormatter = function(value, row, index) {
    var result = "";
    result += "<a href='javascript:;' onclick=\"deleteHonor(\'"+value+"\')\" name='deleteHonor' type='button' class='btn btn-w-m btn-danger btn-sm'>删除</a>";
    return result;
}


//时间格式化
var dataFormatter = function(value) {
    if (null != value && "" != value) {
        return value.replace(".0", "");
    }
    return "";
}
//bootstrapTable初始化参数
var initHonor = {
    url : '/init/contact/findHonorList',
    method: 'post',                      //请求方式（*）
    toolbar: '#toolbar',                //工具按钮用哪个容器
    striped: true,                      //是否显示行间隔色
    cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
    pagination: true,                   //是否显示分页（*）
    sortable: true,                     //是否启用排序
    sortOrder: "asc",                   //排序方式
    queryParams: queryParams,           //传递参数（*）
    sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
    pageNumber:1,                       //初始化加载第一页，默认第一页
    pageSize: 5,                       //每页的记录行数（*）
    pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数（*）
    search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
    strictSearch: true,
    showColumns: false,                  //是否显示所有的列
    showRefresh: false,                  //是否显示刷新按钮
    minimumCountColumns: 2,             //最少允许的列数
    clickToSelect: false,                //是否启用点击选中行
    //height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
    uniqueId: "honorId",                 //每一行的唯一标识，一般为主键列
    showToggle:false,                    //是否显示详细视图和列表视图的切换按钮
    cardView: false,                    //是否显示详细视图
    detailView: false,                   //是否显示父子表
    columns : [{
        field : 'honorId',
        title : '操作',
        width : 120,
        align : 'center',
        valign : 'middle',
        formatter : actionFormatter
    }, {
        field : 'honorYear',
        title : '年份',
        align : 'center',
        sortable : true
    }, {
        field : 'honorEvent',
        title : '事件',
        sortable : true
    },{
        field : 'createDate',
        title : '创建时间',
        formatter : dataFormatter
    }],
    onLoadError:function(status, res){
        errorFunc(res,status);
    },
    onLoadSuccess:function(data){
        $.getScript("../js/contabs.children.min.js");  //加载js文件
    }
}

//操作
var actionFormatter1 = function(value, row, index) {
    var result = "";
    result += "<a href='javascript:;' onclick=\"deleteEvent(\'"+value+"\')\" name='deleteEvent' type='button' class='btn btn-w-m btn-danger btn-sm'>删除</a>";
    return result;
}

//bootstrapTable初始化参数
var initEvent = {
    url : '/init/contact/findEventList',
    method: 'post',                      //请求方式（*）
    toolbar: '#toolbar1',                //工具按钮用哪个容器
    striped: true,                      //是否显示行间隔色
    cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
    pagination: true,                   //是否显示分页（*）
    sortable: true,                     //是否启用排序
    sortOrder: "asc",                   //排序方式
    queryParams: queryParams,           //传递参数（*）
    sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
    pageNumber:1,                       //初始化加载第一页，默认第一页
    pageSize: 5,                       //每页的记录行数（*）
    pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数（*）
    search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
    strictSearch: true,
    showColumns: false,                  //是否显示所有的列
    showRefresh: false,                  //是否显示刷新按钮
    minimumCountColumns: 2,             //最少允许的列数
    clickToSelect: false,                //是否启用点击选中行
    //height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
    uniqueId: "eventId",                 //每一行的唯一标识，一般为主键列
    showToggle:false,                    //是否显示详细视图和列表视图的切换按钮
    cardView: false,                    //是否显示详细视图
    detailView: false,                   //是否显示父子表
    columns : [{
        field : 'eventId',
        title : '操作',
        width : 120,
        align : 'center',
        valign : 'middle',
        formatter : actionFormatter1
    }, {
        field : 'eventNum',
        title : '数值',
        align : 'center',
        sortable : true
    }, {
        field : 'eventContent',
        title : '内容',
        sortable : true
    },{
        field : 'createDate',
        title : '创建时间',
        formatter : dataFormatter
    }],
    onLoadError:function(status, res){
        errorFunc(res,status);
    },
    onLoadSuccess:function(data){
        $.getScript("../js/contabs.children.min.js");  //加载js文件
    }
}

//删除荣誉
var deleteHonor =function(honorId){
    //删除数据模式窗口
    swal({
        title : "您确定要删除这些信息吗",
        text : "删除后将无法恢复，请谨慎操作！",
        type : "warning",
        showCancelButton : true,
        confirmButtonColor : "#DD6B55",
        cancelButtonText : "取消",
        confirmButtonText : "删除",
        closeOnConfirm : false
    }, function() {
        var param = {honorId:honorId};
        $.ajax({url:'/init/contact/deleteHonor',
            data:CommonUtils.encapsulationData(param),
            type:'post',
            async:false,//同步请求
            dataType:'json',
            contentType: "application/json",
            success:function(data) {
                if(data.result){
                    //消息提示款
                    swal({title : "恭喜您",text : data.msg,type : "success"},function(){
                        //刷新列表
                        $("#tbHonor").bootstrapTable('refresh', initHonor);
                    });
                }
            },
            error : function(req, status, err) {
                //消息提示款
                errorFunc(req, status, err);
            }
        });
    })
}

//删除事件
var deleteEvent =function(eventId){
    //删除数据模式窗口
    swal({
        title : "您确定要删除这些信息吗",
        text : "删除后将无法恢复，请谨慎操作！",
        type : "warning",
        showCancelButton : true,
        confirmButtonColor : "#DD6B55",
        cancelButtonText : "取消",
        confirmButtonText : "删除",
        closeOnConfirm : false
    }, function() {
        var param = {eventId:eventId};
        $.ajax({url:'/init/contact/deleteEvent',
            data:CommonUtils.encapsulationData(param),
            type:'post',
            async:false,//同步请求
            dataType:'json',
            contentType: "application/json",
            success:function(data) {
                if(data.result){
                    //消息提示款
                    swal({title : "恭喜您",text : data.msg,type : "success"},function(){
                        //刷新列表
                        $("#tbEvent").bootstrapTable('refresh', initEvent);
                    });
                }
            },
            error : function(req, status, err) {
                //消息提示款
                errorFunc(req, status, err);
            }
        });
    })
}




//查询数据信息
var findContact = function() {
	$.ajax({
		url :"/init/contact/findContact",
		data : CommonUtils.encapsulationData({}),
		type : 'post',
		dataType : 'json',
		async : false,// 同步请求
		contentType : "application/json",
		success : function(data) {
			if (data.length > 0) {
				$("#companyAddress").val(data[0].companyAddress);
				$("#contactPhone").val(data[0].contactPhone);
				$("#contactQQ").val(data[0].contactQQ);
				$("#contactEmail").val(data[0].contactEmail);
				$("#companyId").val(data[0].companyId);
				$("#companyName").val(data[0].companyName);
				$("#contactImg").val(data[0].contactImg);
                $("#companyThought").val(data[0].companyThought);
                $("#companyAbout").val(data[0].companyAbout);
                wordStaticCompanyAboutDetailNum(data[0]);
                wordStaticDetailNum(data[0]);
				// 填充图片
				showcontactImg($("#dataForm"), data[0].contactImg);
				$("#logoImg").val(data[0].logoImg);
				// 填充图片
				showHeadImg($("#dataForm"), data[0].logoImg);
				$("#extendField1").val(data[0].extendField1);
				$("#extendField2").val(data[0].extendField2);
			}
		},
		error : function(req, status, err) {
			// 消息提示款
			errorFunc(req, status, err);
		}
	});
}
//上传图片
var initUploadImage = function(){
	// logo图片上传
	$(document).on('change', "input[name='configAtta']", function(){
		if(this.files.length > 1){
			// 消息提示款
			swal({title : "很抱歉",text : "上传图片总数不能超过1个！",type : "info"});
			return;
		}
		for(var i = 0; i < this.files.length; i++){
			//文件后缀
			var filePostfix = this.files[i].name.split('.').splice(-1).toString().toLowerCase();
			if(!/(jpg|png|jpeg)$/.test(filePostfix)){
				// 消息提示款
				swal({title : "很抱歉",text : "上传图片格式错误！",type : "info"});
				return;
			}
			//文件大小判断
			var fileSize = this.files[i].size; 
			if(fileSize>5*1024*1024){
				// 消息提示款
				swal({title : "很抱歉",text : "上传封面图片最大不能超过5M！",type : "info"});
				return;
			}
		}
		// 创建FormData对象
		var data = new FormData();
		// 为FormData对象添加数据
		$.each($(this)[0].files, function(i, file) {
			data.append('upload_file', file);
		});
		var FileController = '/init/user/upload';
		$.ajax({url:FileController,
			data:data,
			type:'post',  
			dataType:'json',
			processData: false,
	        contentType: false,
			success:function(rs) {  
				if(rs.result){
					// 消息提示款
					swal({title : "恭喜您",text : rs.msg,type : "success"},function(){
						// 显示上传成功图片
						if(null != rs.url && "" != rs.url){
							$("#dataForm").find("#logoImg").val(rs.url);
							$("#dataForm").find("#divImgDoc").empty();
							showHeadImg($("#dataForm"),rs.url);
						}
					});
				} else {
					// 消息提示款
					swal({title : "很抱歉",text : rs.msg, type : "error"});
				}
			},
			error : function(req, status, err) { 
				// 消息提示款
				errorFunc(req, status, err);
			}  
		});
	});
	// 微信二维码图片上传
	$(document).on('change', "input[name='wechatImg']", function(){
		if(this.files.length > 1){
			// 消息提示款
			swal({title : "很抱歉",text : "上传图片总数不能超过1个！",type : "info"});
			return;
		}
		for(var i = 0; i < this.files.length; i++){
			//文件后缀
			var filePostfix = this.files[i].name.split('.').splice(-1).toString().toLowerCase();
			if(!/(jpg|png|jpeg)$/.test(filePostfix)){
				// 消息提示款
				swal({title : "很抱歉",text : "上传图片格式错误！",type : "info"});
				return;
			}
			//文件大小判断
			var fileSize = this.files[i].size; 
			if(fileSize>5*1024*1024){
				// 消息提示款
				swal({title : "很抱歉",text : "上传封面图片最大不能超过5M！",type : "info"});
				return;
			}
		}
		// 创建FormData对象
		var data = new FormData();
		// 为FormData对象添加数据
		$.each($(this)[0].files, function(i, file) {
			data.append('upload_file', file);
		});
		var FileController = '/init/user/upload';
		$.ajax({url:FileController,
			data:data,
			type:'post',  
			dataType:'json',
			processData: false,
	        contentType: false,
			success:function(rs) {  
				if(rs.result){
					// 消息提示款
					swal({title : "恭喜您",text : rs.msg,type : "success"},function(){
						// 显示上传成功图片
						if(null != rs.url && "" != rs.url){
							$("#dataForm").find("#contactImg").val(rs.url);
							$("#dataForm").find("#contactImgDoc").empty();
							showcontactImg($("#dataForm"),rs.url);
							
						}
					});
				} else {
					// 消息提示款
					swal({title : "很抱歉",text : rs.msg, type : "error"});
				}
			},
			error : function(req, status, err) { 
				// 消息提示款
				errorFunc(req, status, err);
			}  
		});
	});
}

//表单验证初始化
var initFormValid = function() {
    var e = "<i class='fa fa-times-circle'></i> ";
    var validate = $("#dataForm").validate(
        {
            rules : {
                contactPhone : "required",
                contactEmail : "required",
                contactQQ : "required",
                companyName : "required",
                companyAddress : "required",
                companyAbout : "required",
                companyThought : "required"

            },
            messages : {
                contactPhone : e + "请输入电话",
                contactEmail : e + "请输入邮箱",
                contactQQ : e + "请输入QQ",
                companyName : e + "请输入名称",
                companyAddress : e + "请输入地址",
                companyAbout : e + "请输入简介",
                companyThought : e + "请输入思想"
            },
            highlight : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent().removeClass(
                        "has-success").addClass("has-error");
                } else {
                    $(e).parent().parent().removeClass("has-success")
                        .addClass("has-error");
                }
            },
            success : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent()
                        .removeClass("has-error");// .addClass("has-success")
                } else {
                    $(e).parent().parent().removeClass("has-error");// .addClass("has-success")
                }
            },
            errorElement : "span",
            errorPlacement : function(e, r) {
                if (r.is(":radio") || r.is(":checkbox")) {
                    e.appendTo(r.parent().parent());
                } else {
                    e.appendTo(r.parent());
                }
            },
            errorClass : "help-block m-b-none",
            validClass : "help-block m-b-none"
        });
    return validate;
}

//弹出框 荣誉表单验证初始化
var initHonorFormValid = function() {
    var e = "<i class='fa fa-times-circle'></i> ";
    var validate = $("#honorModalForm").validate(
        {
            rules : {
                honorYear : "required",
                honorEvent : "required"
            },
            messages : {
                honorYear : e + "请输入年份",
                honorEvent : e + "请输入内容"
            },
            highlight : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent().removeClass(
                        "has-success").addClass("has-error");
                } else {
                    $(e).parent().parent().removeClass("has-success")
                        .addClass("has-error");
                }
            },
            success : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent()
                        .removeClass("has-error");// .addClass("has-success")
                } else {
                    $(e).parent().parent().removeClass("has-error");// .addClass("has-success")
                }
            },
            errorElement : "span",
            errorPlacement : function(e, r) {
                if (r.is(":radio") || r.is(":checkbox")) {
                    e.appendTo(r.parent().parent());
                } else {
                    e.appendTo(r.parent());
                }
            },
            errorClass : "help-block m-b-none",
            validClass : "help-block m-b-none"
        });
    return validate;
}

//弹出框 事件表单验证初始化
var initEventFormValid = function() {
    var e = "<i class='fa fa-times-circle'></i> ";
    var validate = $("#eventModalForm").validate(
        {
            rules : {
                eventNum : "required",
                eventContent : "required"
            },
            messages : {
                eventNum : e + "请输入数值",
                eventContent : e + "请输入内容"
            },
            highlight : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent().removeClass(
                        "has-success").addClass("has-error");
                } else {
                    $(e).parent().parent().removeClass("has-success")
                        .addClass("has-error");
                }
            },
            success : function(e) {
                if (e.type == "radio" || e.type == "checkbox") {
                    $(e).parent().parent().parent()
                        .removeClass("has-error");// .addClass("has-success")
                } else {
                    $(e).parent().parent().removeClass("has-error");// .addClass("has-success")
                }
            },
            errorElement : "span",
            errorPlacement : function(e, r) {
                if (r.is(":radio") || r.is(":checkbox")) {
                    e.appendTo(r.parent().parent());
                } else {
                    e.appendTo(r.parent());
                }
            },
            errorClass : "help-block m-b-none",
            validClass : "help-block m-b-none"
        });
    return validate;
}

//拼接logo图片
var showHeadImg = function(from, url){
	 // 新增类型下拉控选项值件初始化
    var serverPath = CommonUtils.getServerRoot();
	var imgURL = url;
	from.find("#divIMG").show();
	var img = '<div id="imgItem" style="float:left">';
		img += '<div>';
		img += '<a class="fancybox" href="'+serverPath + imgURL+'" title="logo">';
		img += '<img alt="image" id="fileUrl" name="fileUrl" style="width:120px;height:100px;margin: 0 5px 5px 0;" fileUrl="'+imgURL+'" src="'+serverPath + imgURL+'" />';
		img += '</a>';
		img += '</div>';
		img += '</div>';
    from.find("#divIMG #divImgDoc").append(img);
    // 加载图片预览
    $(".fancybox").fancybox({openEffect:"none",closeEffect:"none"});
}
//拼接wechat图片
var showcontactImg = function(from, url){
	 // 新增类型下拉控选项值件初始化
    var serverPath = CommonUtils.getServerRoot();
	var imgURL = url;
	from.find("#contactIMG").show();
	var img = '<div id="contactimgItem" style="float:left">';
		img += '<div>';
		img += '<a class="fancybox" href="'+serverPath + imgURL+'" title="wechat">';
		img += '<img alt="image" id="fileUrl" name="fileUrl" style="width:120px;height:100px;margin: 0 5px 5px 0;" fileUrl="'+imgURL+'" src="'+serverPath + imgURL+'" />';
		img += '</a>';
		img += '</div>';
		img += '</div>';
    from.find("#contactIMG #contactImgDoc").append(img);
    // 加载图片预览
    $(".fancybox").fancybox({openEffect:"none",closeEffect:"none"});
}

// 展示数据时候计算公司思想当前的字数
var wordStaticDetailNum = function(dataInfo){
    if(null != dataInfo.companyThought && "" != dataInfo.companyThought){
        //填充备注的字数提示
        if(dataInfo.companyThought.length > 0){
            var companyThought = dataInfo.companyThought.replace(/\n|\r/gi,"");
            $("#num").html(companyThought.length)
        }
    }
}
//计算公司思想 字符数
function wordStatic(input) {
    // 获取要显示已经输入字数文本框对象
    var content = document.getElementById('num');
    if (content && input) {
        // 获取输入框输入内容长度并更新到界面
        var value = input.value;
        // 将换行符不计算为单词数
        value = value.replace(/\n|\r/gi,"");
        // 更新计数
        content.innerText = value.length;
    }
}

// 展示数据时候计算公司思想当前的字数
var wordStaticCompanyAboutDetailNum = function(dataInfo){
    if(null != dataInfo.companyAbout && "" != dataInfo.companyAbout){
        //填充备注的字数提示
        if(dataInfo.companyAbout.length > 0){
            var companyAbout = dataInfo.companyAbout.replace(/\n|\r/gi,"");
            $("#companyAboutNum").html(companyAbout.length)
        }
    }
}
//计算公司简介 字符数
function wordStaticCompanyAbout(input) {
    // 获取要显示已经输入字数文本框对象
    var content = document.getElementById('companyAboutNum');
    if (content && input) {
        // 获取输入框输入内容长度并更新到界面
        var value = input.value;
        // 将换行符不计算为单词数
        value = value.replace(/\n|\r/gi,"");
        // 更新计数
        content.innerText = value.length;
    }
}


